package cn.demoncat.util.sec.entity;

import lombok.Data;

/**
 * 证书参数
 * 
 * @author 延晓磊
 *
 * @since 2020年6月10日
 */
@Data
public class CertParam {

	/**
	 * 密钥库标识（别名）
	 */
	private String alias;
	/**
	 * 密钥库密码（口令）
	 */
	private String pwd;
	/**
	 * 密钥库有数天数
	 */
	private int validity = 3650;
	/**
	 * 所有者-名称：CN
	 */
	private String commonName;
	/**
	 * 所有者-组织：O
	 */
	private String organization;
	/**
	 * 所有者-部门：OU
	 */
	private String organizationalUnit;
	/**
	 * 所有者-国：C
	 */
	private String country;
	/**
	 * 所有者-省：ST（state）
	 */
	private String province ;
	/**
	 * 所有者-市：L（locality）
	 */
	private String city;
	
	/**
	 * 构建
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年6月10日
	 */
	public static CertParam build() {
		return new CertParam();
	}
	
	/**
	 * 密钥库信息
	 * 
	 * @param alias	别名
	 * @param pwd	密码
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年6月10日
	 */
	public CertParam alias(String alias, String pwd) {
		this.alias = alias;
		this.pwd = pwd;
		return this;
	}
	
	/**
	 * 有效天数
	 * 
	 * @param validity
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年6月10日
	 */
	public CertParam validity(int validity) {
		this.validity = validity;
		return this;
	}
	
	/**
	 * 所有者信息
	 * 
	 * @param cn	名称
	 * @param o		组织
	 * @param ou	部门
	 * @param c		国家
	 * @param st	省
	 * @param l		市
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年6月10日
	 */
	public CertParam owner(String cn, String o, String ou, String c, String st, String l) {
		this.commonName = cn;
		this.organization = o;
		this.organizationalUnit = ou;
		this.country = c;
		this.province = st;
		this.city = l;
		return this;
	}
	
	/**
	 * 获取所有者
	 * 
	 * @return -dname 
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年6月10日
	 */
	public String getOwner() {
		return String.format("CN=%s, OU=%s, O=%s, L=%s, S=%s, C=%s", this.commonName, this.organizationalUnit, this.organization, this.city, this.province, this.country);
	}
	

}
